package com.sisyphus.spinach.core;

import android.util.Log;

import androidx.annotation.NonNull;
import androidx.lifecycle.DefaultLifecycleObserver;
import io.reactivex.rxjava3.disposables.Disposable;

public interface INetTask {

    interface Presenter<T, V extends View<T>> extends DefaultLifecycleObserver, ITask {
        /**
         * 绑定view
         */
        void bind(V view);

        /**
         * 添加订单
         */
        default void add(@NonNull Disposable d) {

        }

        /**
         * 执行任务
         */
        default void execute() {

        }

    }


    interface View<T> extends ITask.View {
        /**
         * 开始
         */
        default void start() {
            Log.i("IRequestTask.View", ">>> start >>>:" + Thread.currentThread().getName());
        }

        /**
         * 失败
         *
         * @param throwable 失败原因
         */
        default void failure(Throwable throwable) {
            throwable.printStackTrace();
        }

        /**
         * 完成
         */
        default void complete() {
            Log.i("IRequestTask.View", ">>> complete >>>:" + Thread.currentThread().getName());
        }

        /**
         * 成功
         */
        default void success(T data) {

        }

    }

}
